package entities;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table (name="sge_lotes", schema="sisgeremp")
public class Lote {

	@Column (name="data_fabricacao")
	private Date dataFabricacao;

	@Id
	@Column (name="id_lote")
	private long id;	

	@OneToMany (mappedBy="lote", fetch = FetchType.EAGER)
	@Cascade (CascadeType.ALL)
	private Collection<Produto> produtos;

	@Column (name="A_VENDA")
	private boolean aVenda;

	public Lote(){
		produtos = new ArrayList();
	}
	
	/**
	 * @return the dataFabricacao
	 */
	public Date getDataFabricacao() {
		return dataFabricacao;
	}

	/**
	 * @param dataFabricacao the dataFabricacao to set
	 */
	public void setDataFabricacao(Date dataFabricacao) {
		this.dataFabricacao = dataFabricacao;
	}

	public long getId() {
		return id;
	}

	/**
	 * @return the produtos
	 */
	public Collection<Produto> getProdutos() {
		return produtos;
	}

	/**
	 * @return the aVenda
	 */
	public boolean isaVenda() {
		return aVenda;
	}

	/**
	 * @param aVenda the aVenda to set
	 */
	public void setaVenda(boolean aVenda) {
		this.aVenda = aVenda;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @param produtos the produtos to set
	 */
	public void setProdutos(Collection<Produto> produtos) {
		this.produtos = produtos;
	}
	
	public String toString() {
		return ReflectionToStringBuilder.toString(this);
	}


}
